package com.wan.core.strategy;

import java.lang.annotation.*;

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@Documented
public @interface Strategy {
    /**
     * 指定创建器
     */
    Class<? extends StrategySelectorCreator<?, ?, ?>> creator();

    /**
     * 自定义扫描实现类的包路径,不填默认注解的类的包路径
     */
    String[] scanPackages() default {};

    /**
     * 预加载的扫描类型
     */
    ScanType scanType() default ScanType.CUSTOM;

    enum ScanType{
        /** 不进行预加载扫描 */
        NONE,
        /** 自定义的扫描路径 */
        CUSTOM,
        /** 扫全包（依赖策略池初始化时的scanPackages） */
        ALL,
    }

}
